// 引入 AsyncQueue 类
const AsyncQueue = require('./02.AsyncQueue');

// 测试用例
test('AsyncQueue test', async () => {
  // 创建一个并发数为 2 的队列
  const queue = new AsyncQueue(2);
  // 存储结果的数组
  const results = [];
  // 延迟函数
  const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

  // 添加任务的函数
  const addTask = async (num) => {
    // 延迟 num * 100 毫秒
    await delay(num * 100);
    // 将 num 存入结果数组
    results.push(num);
  };

  // 添加任务到队列中
  queue.push(addTask(1));
  queue.push(addTask(2));
  queue.push(addTask(3));
  queue.push(addTask(4));

  // 等待队列中所有任务执行完毕
  await queue.wait();

  // 断言结果数组是否符合预期
  expect(results).toEqual([1, 2, 3, 4]); // 输出结果是 [1, 2, 3, 4]，符合预期
});
